perm filename MEMO.PUB[HAL,HE]2 blob
sn#126045 filedate 1974-10-23 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00007 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 .FIGS←TRUE
C00010 00003 .IF XCRIBL THEN START
C00012 00004 .NEXT PAGE
C00015 00005 .ADJUST COMPACT
C00016 00006 .REQUIRE"MEMO25.PUB" SOURCE_FILE <<INTRO, GOALS, SYSTEM OUTLINE>>
C00018 00007 .PORTION CONTENTS
C00021 ENDMK
C⊗;
.FIGS←TRUE;
.STD_SPREAD ← 1;
.<<PUB STATEMENTS>>
.TURN ON "∞π↑↓[]{_α#←→&∂";
.TURN OFF TAB;
.STD_PREFACE← 2*STD_SPREAD - 1;
.SPREAD ← STD_SPREAD ;
.PREFACE STD_PREFACE ;
.NOFILL; PREFACE SPREAD-1; FILL;
.MACRO UNFILL ⊂BEGIN NOFILL;PREFACE SPREAD-1;SKIP 2-SPREAD;GROUP⊃;
.MACRO MATRIX ⊂BEGIN NOFILL PREFACE 0 SKIP SPREAD GROUP⊃
.MACRO REFILL ⊂END; SKIP 2-SPREAD; CONTINUE⊃;
.MACRO MAYBREAK ⊂APART;GROUP;⊃;
.MACRO BULL ⊂ONCE; FLUSH LEFT⊃;
.MACRO REPART ⊂END; SKIP 2-SPREAD; APART⊃;
.MACRO COMT(X) ⊂BEGIN FILL;INDENT X,X;PREFACE 0;}%4{⊃
.MACRO CEIL(X); ⊂("GINT(X)")⊃;
.MACRO THETA ⊂"O∂-1-"⊃;
.MACRO PHI ⊂"O∂-1|"⊃
.MACRO SIGMA ⊂"~"⊃;
.MACRO INTEGRAL ⊂"%2α~%*"⊃;
.MACRO PLUSMINUS ⊂"∩"⊃;
.MACRO DEL ⊂"@"⊃
.MACRO TAU ⊂"λ"⊃;
.COUNT SECTION FROM 1 TO 99 PRINTING ⊂SECTION⊃;
.COUNT SUBSEC FROM 0 TO 9 IN SECTION PRINTING "!.1";
.COUNT SUBSUBSEC FROM 0 TO 99 IN SUBSEC PRINTING "!.1";
.COUNT FOOTNOTE INLINE FROM 1 TO 9 IN PAGE;
.MACRO NEWSEC(TITLE,ID,STARS) ⊂
.NEXT SECTION!;
.IF PICLIN≠NULL THEN ALLPIC;
.SECNAME←NULL;
.SSECNAME←NULL;
.SSSNUM←NULL
.NEXT SUBSEC;FIGURE←0;TABLE←0;
.SECNAME←"TITLE";
.SSECNAME←"ID";
.SKIP TO COLUMN 1; BEGIN CENTER;
%5{SECID} {SECTION!}%*
%6{SECNAME}%*
.END
.FILLER←"STARS"; IF FILLER=NULL THEN FILLER←" ";
.SEND CONTENTS ⊂IF LINES<3*SPREAD+1 THEN
.BEGIN
.NEXT PAGE
{SECID}→PAGE
.END
{SECTION!}{FILLER} TITLE →{PAGE!}
.⊃
.IF "STARS"=NULL THEN SECNAME←"TITLE" ELSE SECNAME←"STARS";⊃
.MACRO NEWSS(TITLE,ID,LAB,STARS) ⊂
.NEXT SUBSEC!;
.IF PICLIN≠NULL THEN ALLPIC;
.SSSNUM←SUBSEC!
.NEXT SUBSUBSEC;
.IF LINES≤10*SPREAD THEN NEXT PAGE ELSE SKIP 4*SPREAD;
.SSECNAME←"ID";
.IF SSECNAME=NULL THEN SSECNAME←"TITLE";
%5{SUBSEC!} TITLE%*
.FILLER←"STARS"; IF FILLER=NULL THEN FILLER←" ";
.SEND CONTENTS ⊂IF LINES<3*SPREAD+1 THEN
.BEGIN
.NEXT PAGE
{SECID}→PAGE
.END
{SUBSEC!}{FILLER} TITLE →{PAGE!}
.⊃
.⊃
.MACRO NEWSSS(TITLE,LAB,STARS) ⊂
.NEXT SUBSUBSEC!;
.SSSNUM←SUBSUBSEC!
.IF LINES≤8*SPREAD THEN NEXT PAGE ELSE SKIP 2*SPREAD;
%4{SUBSUBSEC!} TITLE%*
.BREAK
.FILLER←"STARS"; IF FILLER=NULL THEN FILLER←" ";
.SEND CONTENTS ⊂IF LINES<3*SPREAD+1 THEN
.BEGIN
.NEXT PAGE
{SECID}→PAGE
.END
{SUBSUBSEC!}{FILLER} TITLE →{PAGE!}
.⊃
.⊃
.COUNT EQUATION INLINE IN SECTION PRINTING "!.1"
.MACRO NEWEQ⊂
.NEXT EQUATION!;"→[Eq. ";EQUATION!;"]"⊃
.MACRO EQREF(LBL)⊂"Equation ";EQUATION! LBL⊃
.MACRO SECREF(LBL)⊂"Chapter ";SECTION! LBL⊃
.MACRO SSREF(LBL)⊂"Section ";SUBSEC! LBL⊃
.MACRO SSSREF(LBL)⊂"subsection ";SUBSUBSEC! LBL⊃
.MACRO FIGREF(LBL)⊂"Figure ";FIGURE LBL⊃
.MACRO TABREF(LBL)⊂"Table "; LBL⊃
.AT NULL ⊂IF FILLING THEN
. START BREAK;
. IF LINES<2*SPREAD+1 THEN NEXT PAGE END
. ELSE SKIP SPREAD⊃;
.RECURSIVE MACRO STOREPIC(TITLE,LINES,TEMP) ⊂START
.PICLIN←PICLIN&" "[1 TO 2-LENGTH("LINES")]&"LINES";
.PICNUM←PICNUM&" "[1 TO 4-LENGTH(TEMP)]&TEMP;
.PICTLEN←PICTLEN&" "[1 TO 2-LENGTH(LENGTH("TITLE"))]&LENGTH("TITLE");
.PICTIT←PICTIT&"TITLE";
.END⊃
.MACRO NEWFIG(TITLE,εLINES,LABEL) ⊂
.FIGURE←FIGURE+1; LABEL TEMP←SECTION&"."&FIGURE; }Figure {TEMP;
.STOREPIC(|TITLE|,LINES,TEMP) ⊃;
.MACRO MAKEFIG(TITLE,εLINES,LABEL) ⊂
.FIGURE←FIGURE+1;LABEL TEMP←SECTION&"."&FIGURE;
.STOREPIC(|TITLE|,LINES,TEMP) ⊃;
.PICLIN←PICNUM←PICTLEN←PICTIT←NULL
.MACRO SMALLPIC⊂⊃
.MACRO ALLPIC⊂⊃
.MACRO NEWTABLE(TITLE,LABEL)⊂
.TABLE←TABLE+1; LABEL TEMP←SECTION&"."&TABLE;
.BEGIN NOFILL CENTER GROUP
Table {TEMP}
TITLE
.⊃;
.IF FIGS THEN START
.MACRO PLACEPIC ⊂BEGIN CENTER PREFACE SPREAD-1
.A←PICLIN[1 TO 2]; B←PICNUM[1 TO 4];
.C←PICTLEN[1 TO 2]; D←PICTIT[1 TO C];
.PICLIN←PICLIN[3 TO ∞]; PICNUM←PICNUM[5 TO ∞];
.PICTLEN←PICTLEN[3 TO ∞]; PICTIT←PICTIT[C+1 TO ∞];
.GROUP SKIP A;
Figure {B}
{D}
.SKIP 2*SPREAD;
.END⊃
.RECURSIVE MACRO RSPIC ⊂
.IF LINES-3*SPREAD≥PICLIN[1 TO 2] THEN PLACEPIC
.ELSE START
. TLIN←TLIN&PICLIN[1 TO 2]; PICLIN←PICLIN[3 TO ∞];
. TNUM←TNUM&PICNUM[1 TO 4]; PICNUM←PICNUM[5 TO ∞];
. C←PICTLEN[1 TO 2];
. TTLEN←TTLEN&C; PICTLEN←PICTLEN[3 TO ∞];
. TTIT←TTIT&PICTIT[1 TO C]; PICTIT←PICTIT[C+1 TO ∞];
. END;
.IF PICLIN≠NULL THEN RSPIC⊃
.RECURSIVE MACRO SMALLPIC ⊂
.TLIN←TNUM←TTLEN←TTIT←NULL;
.RSPIC;
.PICLIN←TLIN; PICNUM←TNUM; PICTLEN←TTLEN; PICTIT←TTIT;
.IF LINES<2*SPREAD-1 THEN NEXT PAGE ⊃
.RECURSIVE MACRO ALLPIC ⊂
.IF PICLIN≠NULL THEN SMALLPIC;;
.IF PICLIN≠NULL THEN BEGIN PLACEPIC; ALLPIC END ⊃
.AT NULL ⊂IF FILLING THEN
. START BREAK;
. IF PICLIN≠NULL THEN SMALLPIC;
. IF LINES<2*SPREAD+1 THEN NEXT PAGE END
. ELSE SKIP SPREAD⊃;
.BEFORE PAGE ⊂STANDARD TITLES;
. IF PICLIN≠NULL THEN SMALLPIC ⊃
.END COMMENT PICTURE MACROS;
.BOTTOM←50;
.MACRO FULL⊂BOTTOM-3*SPREAD⊃
.MACRO HALF⊂BOTTOM/2-3*SPREAD⊃
.MACRO THIRD⊂BOTTOM/3-3*SPREAD⊃
.SECNAME←NULL
.<< macros not in mac.pub >>
.IF XCRIBL THEN FONT 1 "BASL30"
.IF XCRIBL THEN FONT 4 "BASI30"
.IF XCRIBL THEN FONT 5 "BASB30"
.IF XCRIBL THEN FONT 6 "BDR40"
.IF XCRIBL THEN FONT 7 "LPT"
.IF XCRIBL THEN START
.!xgplftmar← 200
.END
.PAGE FRAME 53 HIGH 80 WIDE;
.TITLE AREA HEADING LINES 1 TO 4 CHARS 1 TO 80;
.AREA TEXT LINES 5 TO 53 CHARS 1 TO 80;
.TURN ON "%\"
.TABS 17
.SECID←"CHAPTER";
.SECNAME←NULL
.COUNT PAGE FROM 1 TO 999 PRINTING ⊂PAGE⊃;
.IF XCRIBL THEN SELECT 1
.NEXT PAGE
.SSECNAME←NULL;
.PORTION TITLEPAGE
.BEGIN NOFILL
.AREA TEXT LINES 1 TO 53 CHARS 1 TO 80
.NEXT PAGE
.GROUP SKIP 1
%1STANFORD ARTIFICIALL INTELLIGENCE LABORATORY →SEPTEMBER 1974
MEMO AIM-243
.GROUP SKIP 2
COMPUTER SCIENCE DEPARTMENT
REPORT CS-456
.GROUP SKIP 4
.NOFILL CENTER
%6HAL, A Programming System for Automation
%5Preliminary Report
.GROUP SKIP 4
%1Raphael Finkel, Russell Taylor, Robert Bolles, Richard Paul, Jerome Feldman
.GROUP SKIP 5
.FILL ADJUST COMPACT
.NARROW 8,8
HAL, a new language for specification of manipulatory actions, is
described. It is the most recent in a series of efforts in this direction,
a series including,
in particular, APT and WAVE. The HAL system includes a source language with
advanced features for describing individual motions of manipulators and
complex series of motions making up an entire assembly, and the runtime
system necessary for execution of programs.
.WIDEN
.NOFILL SKIP TO LINE 42
.FILL
∞_→#
.BREAK
%4This research was supported in part by the
National Science Foundation under contract No. GIα-42906 and in part by
the Advanced Research
Projects Agency of the Office of Defense under Contract No. DAHC-15-73-C-0435
The views and conclusions in this document are those of the authors and
should not be interpreted as necessarily representing the official policies,
either expressed or implied, of the
funding agencies.
Reproduced in the USA. Available from the National Technical Information
Service, Springfield, Virginia 22151.%*
.END
.ADJUST COMPACT
.SECNAME←NULL
.SSECNAME←NULL
.SSSNUM←NULL
.INSERT CONTENTS
.PORTION BODY;
.COUNT PAGE FROM 1 TO 999 PRINTING ⊂PAGE⊃;
.EVEN HEADING(Page {PAGE!},{SSECNAME},{SSSNUM});
.ODD HEADING({SSSNUM},{SSECNAME},Page {PAGE!});
.NEXT PAGE
.REQUIRE"MEMO25.PUB" SOURCE_FILE; <<INTRO, GOALS, SYSTEM OUTLINE>>
.REQUIRE"MEMO61.PUB" SOURCE_FILE; <<COMPILER: CON.TROL, DATA, MOTIONS>>
.REQUIRE"MEMO63.PUB" SOURCE_FILE; <<COMPILER: ATTACH, GRAPH, CTV, LIB>>
.REQUIRE"MEMO64.PUB" SOURCE_FILE; <<COMPILER: VERY HIGH LEVEL FEATURES>>
.REQUIRE"MEMO7.PUB" SOURCE_FILE; <<OVERVIEW OF THE RUNTIME>>
.REQUIRE"MEMO8.PUB" SOURCE_FILE; <<USER FEATURES, DIALOG>>
.REQUIRE"MEMO9.PUB" SOURCE_FILE; <<EXTENSIONS>>
.REQUIRE"MEMO10.PUB" SOURCE_FILE; <<CONCLUSION, BIBLIOGRAPHY>>
.PORTION APPENDIX
.SECID←"APPENDIX";
.SEND CONTENTS ⊂
APPENDICES
.⊃
.COUNT SECTION FROM 1 TO 99 PRINTING "I";
.COUNT SUBSEC FROM 0 TO 9 IN SECTION PRINTING "!.1";
.COUNT SUBSUBSEC FROM 0 TO 99 IN SUBSEC PRINTING "!.1";
.REQUIRE"XMPLES.PUB" SOURCE_FILE; <<PROGRAMMING EXAMPLES>>
.REQUIRE"RUNTIM.PUB" SOURCE_FILE; <<THE RUNTIME SYSTEM>>
.PORTION CONTENTS
.COUNT PAGE FROM 2 PRINTING "i";
.SSECNAME←"FOREWORD";
.SSSNUM ← NULL;
.SECNAME←"FOREWORD";
.NEXT PAGE
This document describes the new hand language, HAL. It is
not intended to be a final language specification or a user's manual.
Rather, it is a working document; it presents a number of related
ideas concerning a system for programmable automation. These ideas
cover quite a range of topics: arm servoing, parallel processing,
assembly world modelling, strategists, and language design. We have
tried to combine these into a coherent system. However, as you read
this document you will notice that some topics have been explored
more than others, some explanations contain more details than others,
and some questions are left unanswered. Various portions of the
system have already been implemented. The current state of the system
is discussed in an appendix. At present HAL is still somewhat in a
state of flux; we are presenting these ideas to solicit constructive
suggestions.
Interested persons unfamiliar with the background for this work
will find it useful to read %4The Use of Sensory Feedback in a
Programmable Assembly System%* [Bolles].
We would like to thank those people who have already made
numerous suggestions and have helped implement various parts of the
system. In particular, we would to thank Bertrand Meyer, who is
implementing the scanner and parser, and Bo Eross, who is
implementing the PDP11 runtime monitor.
We would also like to thank Bruce Baumgart, who assisted with the illustrations.
The English language has no genderless personal pronoun; without
any implication of sexism we use the feminine form in its place.
.SSECNAME←"TABLE OF CONTENTS";
.SECNAME←"TABLE OF CONTENTS";
.NEXT PAGE
.INDENT 0
.NOFILL
.TURN ON "∞→"
CHAPTER →PAGE
.RECEIVE